import MarkdownIt from 'markdown-it';
import { useState } from 'react';
import count from 'word-count';
import { useDebounce } from './useDebounce';

// 初始化 MarkdownIt 实例
const md = new MarkdownIt();

// 自定义 Hook：计算 Markdown 字数
export function useMarkdownWordCount() {
  const [wordCount, setWordCount] = useState(0);
  const [text, setText] = useState('');

  // 处理 Markdown 内容变化
  const handleChange = (newText: string) => {
    setText(newText);
    // 将 Markdown 渲染成 HTML
    const rendered = md.render(newText);
    // 去掉 HTML 标签，得到纯文本
    const plainText = rendered.replace(/<[^>]*>/g, '');
    setWordCount(count(plainText));
  };

  // 使用防抖函数优化性能
  const debouncedHandleChange = useDebounce(handleChange, 300);

  return {
    wordCount,
    text,
    onChange: debouncedHandleChange,
  };
}
